package com.allwees.bs.c.module.address.service;

import com.allwees.bs.c.module.address.def.CountryType;
import com.allwees.bs.c.module.address.def.LangType;
import com.allwees.bs.c.module.address.entity.RegionChild;
import com.allwees.bs.c.module.address.entity.RegionCountry;
import com.allwees.bs.c.module.address.entity.RegionLang;

import java.util.List;

/**
 * 地址服务
 */
public interface IAddressService {
    /**
     * 获取这个国家支持的所有语言类型
     *
     * @param countryType 国家类型
     * @return 国家所支持的语言
     */
    List<LangType> getLangTypes(CountryType countryType);

    /**
     * 获取某个国家所有街道信息
     *
     * @param countryType 国家类型
     * @return 所有街道信息
     */
    RegionCountry getRegionCountry(CountryType countryType);

    /**
     * 获取所有的国家信息
     *
     * @return 国家信息列表
     */
    List<RegionCountry> getRegionCountries();

    /**
     * 获取国家指语言的地理位置信息
     *
     * @param countryType 国家类型
     * @param langType    语言类型
     * @return 地理位置信息
     */
    RegionLang getRegionLang(CountryType countryType, LangType langType);

    /**
     * 获取指定节点的子节点
     *
     * @param regionChildId 子节点的 ID 必须为全数据唯一
     */
    List<RegionChild> getRegionChildById(CountryType countryType, LangType langType, String regionChildId);
}
